package algorithm.interpreters;

import javax.sound.midi.Track;

import bols.BolBase;
import bols.BolSequence;
import bols.Variation;

public interface VariationInterpreter {
	
	public BolBase getBolBase();
	public void setBolBase(BolBase bolBase);
	
	/**
	 * Render the variation to the midi track at a given starting time.
	 * @param variation
	 * @param track
	 * @param startingAt
	 */
	public void renderToMidiTrack(Variation variation, Track track, long startingAt);
	
	/**
	 * Renders the variation to the midi track at a given starting time,
	 * and return the generated BolSequence as generated by the interpreter.
	 * @param variation
	 * @param track
	 * @param startingAt
	 * @return the interpreted bolsequence
	 */
	public BolSequence renderToBolSequenceAndMidiTrack(Variation variation, Track track, long startingAt);
}
